Skip to content

Conversation

@thomhurst
Copy link
Owner

Summary

Fixes multiple CI failures that have been affecting the main branch.

Issues Fixed

1. Flaky WaitsFor_Performance_Many_Quick_Polls test (Windows, net472)

The test was using a 1ms polling interval, which is unrealistic on .NET Framework 4.7.2 where the minimum Windows timer resolution is typically 15-16ms. The test expected 100+ polling iterations in 5 seconds but only achieved ~71 before timing out.

Fix: Changed to 10ms polling interval and reduced target count from 100 to 20, which still validates the "many quick polls" behavior while being reliable across all platforms.

2. Missing net10.0 target in FSharp/VB NuGet tester projects

The TestFSharpNugetPackageModule and TestVBNugetPackageModule were failing because the pipeline runs with --framework net10.0 but these projects only had target frameworks up to net9.0.

Fix: Added net10.0 to the TargetFrameworks in both projects to match the C# NuGet tester.

Test plan

  • Local build succeeds
  • CI pipeline passes on all platforms (ubuntu, windows, macos)

- Fix flaky WaitsFor_Performance_Many_Quick_Polls test on net472
  - The 1ms polling interval was unrealistic on .NET Framework where
    the minimum timer resolution is ~15ms
  - Changed to 10ms interval and reduced target count from 100 to 20

- Add net10.0 target framework to FSharp and VB NuGet tester projects
  - Pipeline was running with --framework net10.0 but projects only
    supported up to net9.0
@thomhurst
Copy link
Owner Author

Summary

Fixes two CI infrastructure issues: a flaky performance test on .NET Framework and missing net10.0 target in F#/VB NuGet tester projects.

Critical Issues

None found ✅

Suggestions

Test Coverage Consideration

The WaitsFor_Performance_Many_Quick_Polls test now validates "many quick polls" with only 20 iterations instead of 100. While this fixes the flakiness on .NET Framework 4.7.2, consider whether this still adequately tests the performance scenario you intended. The test name suggests "many" polls, and 20 iterations might be on the lower end for that characterization.

Alternative approaches to consider:

  1. Platform-specific thresholds: Use 100 for modern runtimes and 20 for net472
  2. Rename the test to reflect the new behavior (e.g., WaitsFor_Performance_Quick_Polls)
  3. Accept the current change as a pragmatic fix that still validates the core behavior

However, the current fix is reasonable and makes the test reliable across all platforms, which is the primary goal.

Verdict

APPROVE - No critical issues

The changes are well-explained, address real CI failures, and align the F#/VB projects with the C# project's target frameworks. The test adjustment is a pragmatic fix for .NET Framework's timer resolution limitations.

@thomhurst
Copy link
Owner Author

Summary

Fixes two CI infrastructure issues: flaky timer test on .NET Framework and missing net10.0 targets in F#/VB NuGet test projects.

Critical Issues

None found ✅

Suggestions

Document the attribute removal

The PR description mentions two fixes but doesn't explain the removal of [RunOnWindowsOnly, RunOnLinuxOnly] attributes from TestFSharpNugetPackageModule and TestVBNugetPackageModule in TUnit.Pipeline/Modules/TestNugetPackageModule.cs:19,25.

While the removal appears correct (the AbstractTestNugetPackageModule.TestableFrameworks already handles platform-specific frameworks at lines 40-53), it would be clearer to either:

  1. Add a third item to the "Issues Fixed" section explaining this change, or
  2. Mention it as a related cleanup in the existing fix Retry attribute  #2

This helps future readers understand all changes in the PR.

Previous Review Status

Unable to retrieve previous comments due to GitHub API scope limitations.

Verdict

APPROVE - No critical issues. The changes are correct and well-reasoned:

  • Timer interval fix addresses real .NET Framework limitations (15-16ms minimum resolution)
  • net10.0 targets align with pipeline configuration (TUnit.Pipeline/Modules/TestNugetPackageModule.cs:43)
  • Attribute removal is sound given the existing platform logic in AbstractTestNugetPackageModule

Optional: Consider updating the PR description for completeness.

@thomhurst thomhurst merged commit 6ba6544 into main Jan 18, 2026
13 checks passed
@thomhurst thomhurst deleted the fix/ci-infrastructure-issues branch January 18, 2026 12:08
This was referenced Jan 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants